package cn.anecansaitin.firecrafting.api.common;

import cn.anecansaitin.firecrafting.api.common.block.entity.IFireInterfaceEntity;
import cn.anecansaitin.firecrafting.api.common.crafting.IFireRecipe;
import cn.anecansaitin.firecrafting.common.crafting.FireEnergyRecipe;

/**
 * 配方产物类型接口，用于判断{@link IFireRecipe}的产物是否能在指定的{@link IFireInterfaceEntity}中产生。
 * 可自行创建所需要的类型。
 * 建议使用单例模式。
 *
 * @see FireEnergyRecipe#doAction(IFireInterfaceEntity)
 */
public interface IResultType {
    IResultType ITEM = () -> "item";
    IResultType ENERGY = () -> "energy";
    IResultType FLUID = () -> "fluid";
    IResultType BLOCK = () -> "block";
    IResultType ENTITY = () -> "entity";

    /**
     * @return 类型的名字，用于判断两个类型是否相同。
     */
    String getName();

    default boolean equals(IResultType type) {
        return type != null && (this == type || getName().equals(type.getName()));
    }
}
